package cn.com.huzo.repository.purchase;

import cn.com.huzo.model.entities.purchase.NotesPayabledLinesEntity;
import huzofw.repository.GenericRepository;
import java.util.List;
import java.util.Map;

/**
 * 对账单明细数据访问对象接口。
 *
 * @author 吴旭
 */
public interface NotesPayabledLinesRepository extends GenericRepository<NotesPayabledLinesEntity, String> {

    /**
     * 新增对账单明细信息。
     *
     * @param criterion 对账单ID等
     * @return 插入的数据主键
     */
    Integer insert(Map<String, Object> criterion);

    /**
     * 删除订单到货数据的同时也删除对应的对账明细
     *
     * @param poStockInLinesId 订单到货数据ID
     * @return 影响行数
     */
    Integer deleteByPoStackInLinesId(String poStockInLinesId);

    /**
     * 取得本次对账总金额
     *
     * @param criterion 对账单ID等
     * @return 本次对账总金额
     */
    Double fetchTotalAmount(Map<String, Object> criterion);

    /**
     * 取得导出excel用对账明细
     *
     * @param headerId 对账单标识
     * @param styleNoFlag 有款、无款区分
     * @return
     */
    List<NotesPayabledLinesEntity> fetchExportLinesData(Long headerId, Integer styleNoFlag);

    /**
     * 取得导出excel用对账明细
     *
     * @param headerId 对账单标识
     * @param styleNoFlag 有款、无款区分
     * @return
     */
    List<NotesPayabledLinesEntity> fetchExportLinesDataWithStyleNo(Long headerId, Integer styleNoFlag);

    /**
     * 晚到货对账扣款单
     *
     * @param criterion
     * @return
     */
    List<Map<String, Object>> fetchLateArrivalCutPayabledAmount(Map<String, Object> criterion);
}
